In general, a leg type moving robot, such as a bipedal moving robot, has a clinometer mounted on its body, and the posture of the robot is controlled so that an output of the clinometer (an inclination angle of the body relative to a vertical direction of the body) is converged to an inclination angle of the body of a desired gait.
The clinometer is comprised of a gyro sensor for detecting an angular velocity of the body and an accelerometer (or a vertical indicator, such as a pendulum) for detecting a vertical direction (that is, the gravitational direction). The clinometer is basically adapted to estimate the inclination angle of the body by integrating angular velocities detected by the gyro sensor; however, simply integrating them accumulates integration errors (a so-called “drift” is generated). For this reason, detected values of the accelerometer have been used to correct an estimated inclination angle obtained by integration. To be more specific, a difference between an inclination angle relative to the direction of acceleration detected by the accelerometer and an inclination angle obtained by subjecting a detected value of the gyro sensor to an integrator is determined, and then a correction amount based on the difference (a sum of a value obtained by multiplying the difference by a predetermined gain and a value obtained by integrating the difference and multiplying it by a predetermined gain) is additionally supplied to the integrator so as to correct the inclination angle.
According to this method, however, a drift of the gyro sensor about the vertical axis (the yaw direction) of the robot cannot be compensated for, so that it has been difficult to accurately estimate the orientation of the robot about the vertical axis. In addition, an error of an estimated inclination angle or orientation of the body tends to increase when the body posture of the robot is severely accelerated or decelerated while running or the like.
Hereinafter, an inclination and a direction of a certain representative part, such as a body, will be referred to as “posture” as a generic term. The “inclination” refers to an angle formed relative to a vertical direction. The “direction” refers to a direction of a vector obtained by projecting the vector that indicates the front direction of a representative part onto a horizontal surface.
Generally, a representative part refers to a part provided with a clinometer composed of a gyro sensor and an accelerometer. Other parts may be specified as representative parts if joint displacement detectors, such as encoders, or displacement control actuators are provided on individual joints between the parts and a part with the clinometer, so that the inclinations of the parts can be calculated. For example, even if a head connected by a neck with a joint is provided with a gyro sensor and/or an accelerometer, a body may be defined as a representative part. In an embodiment to be discussed hereinafter, a body will be specified as a representative part.
Furthermore, a set of displacements of all joints is generally referred to as a posture. However, this will not mean a “posture” in the present embodiment unless otherwise specified.
Meanwhile, in a leg type moving robot, reaction forces generated when the robot swings its legs while it is moving cause rotational slippages (spins) to take place between its feet and a floor because the frictional forces between the feet (distal parts of the legs) and the floor exceeds its limit. As a result, the posture of the entire robot rotates about a vertical axis, deviating from the direction of a desired gait.
Complementarily, the body is not necessarily maintained vertically (upright) at all times to generate only the desired gait for straight walking. Even in the desired gait, the entire robot or the body swings or inclines longitudinally or laterally. In other words, the rotation of the entire posture (or the rotation of the posture of a representative part, such as the body) exists also in the desired gait. In the present description, therefore, the rotation of a posture in a desired gait will be referred to as a desired posture rotation. A phenomenon to be mainly discussed in the present description is the deviation of a posture rotation of an entire actual robot (or a posture rotation of a representative part, such as a body) from the above desired posture rotation. Strictly speaking, the phenomenon should be referred to as “perturbation from a desired posture rotation” or “posture rotation perturbation”. This, however, will be abbreviated to “posture rotation” hereinafter unless there is a possibility of confusion with a desired posture rotation.
Hereinafter, a phenomenon in which the entire robot posture-rotates about a vertical axis and deviates from a desired gait direction will be referred to, in particular, as a spin.
If the direction of the robot deviates from the desired gait direction by the posture rotation of the robot taking place as described above, then the moving path will also deviate from a desired moving path. In such a case, it is necessary to guide the moving path of the robot to the desired path. For this purpose, the posture, especially the direction, of a representative part, such as the body, of the robot must be accurately estimated. As mentioned above, however, the conventional technique for estimating the posture of the body of the robot has not permitted accurate estimation of the posture of the robot especially in the yaw direction because of influences of the aforesaid drift.
The present invention has been made with a view based on the background explained above, and it is an object thereof to provide a self posture estimating system that enables a leg type moving robot to accurately estimate its own posture, especially its posture in a yaw direction.